Alteryxでデータベースに出力する際のOutput Optionsごとの挙動

Alteryxでデータベースに出力する際のOutput Optionsごとの挙動

Clock Icon2017.10.16

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、小澤です。

AlteryxでOutput Dataツールを使ってデータベースに出力する際に、「Output Options」という項目があります。

スクリーンショット 2017-10-16 10.54.34

今回は、これらの設定を行った際の挙動について見ていきたいと思います。

Create New Table

まずは、デフォルトである「Create New Table」を選択したときの動きを見てみます。

Create New Tableを選択して、ワークフローを実行すると新規でテーブルが作成されます。 テーブルを作成する際のデータの型などは、Alteryx内でのデータの型から設定されるようです。

例えば、CSVファイルをそのまま出力すると、Alteryx上で文字列として扱われるので、テーブル定義ではすべてvarcharとなりますが、 Auto Fieldを使ってからから出力すると、テーブル定義上でも適切な型が設定されます。

それぞれの方法で出力したデータをAlteryxから読み込んでField Infoツールで型を確認すると以下のようになります。 (上 : CSVをそのまま出力、下 : Auto Fieldツールを使ってから出力)

スクリーンショット 2017-10-16 11.19.49

スクリーンショット 2017-10-16 11.20.01

Create New Table、存在しないテーブルであれば問題なく作成可能です。 しかし、既にあるテーブルを指定した場合、エラーとなります。

スクリーンショット 2017-10-16 11.11.46

そのため、同じワークフローを2回実行すると2回目は必ずエラーになります。

Append Existing

Append Existingを選択すると、既存のテーブルにデータが追記されます。 そのため、同じデータに対して同じワークフローを2回実行すると、同じデータが2つ挿入されることになります。

また、以下の場合はエラーになります。

  • テーブルが存在しない
  • 既存のデータにたいして主キーなどの一意制約に違反するデータが存在する
  • 必須レコードが存在しない

Delete Data & Append

Delete Data & Appendを選択すると、既存のテーブルに対してデータを全件削除したのち、データの挿入を行います。

実行時に既存のデータを一度すべて削除しますので、問題がある場合は注意が必要です。 Alteryxを使ったワークフローでデータを全件洗い替えするような時に利用できます。

Overwrite Table(Drop)

Overwrite Table(Drop)はDelete Data & Appendと似たような動きになります。

Overwrite Table(Drop)では、テーブルそのものを削除して作り直します。 テーブルの削除はdrop table if exists(存在する場合は削除する)扱いなので、存在しないテーブルを対象にしてもエラーとはなりません。

ただし、Create New Tableの時と同様、作成されるテーブルのスキーマは出力対象となるデータに基づいて決定されるので既存のテーブルのスキーマと同じになる保証はありません。

Update

Update: Warn on Update Failure, Update: Error on Update Failure, Update: Insert if Newの3つは、既存のデータを上書きするものになります。

上書きを行う際には「どのレコードが上書き対象か」が明確である必要があります。 これらのUpdate系では、主キーが同一のものが上書き対象として、認識されます。 そのため、対象となるテーブルには主キーが設定されている必要があります。

主キーの無いテーブルに対して、Updateを行うと以下のようなエラーが発生します。

スクリーンショット 2017-10-16 13.41.57

Update系の3つそれぞれの違いとして、既存のデータには含まれないレコードがあった場合の動作が異なります。

Output Option 動作
Warn on Update Failure 存在しないレコードをUpdateしようとした警告メッセージが出力され、可能なものはUpdateされる
Error on Update Failure その場でエラーとなり、Update可能なレコードも処理されない
Insert if New 新規レコードとして挿入される。いわゆるupsert相当の処理

おわりに

今回は、Output Dataツールを利用して、データベースに出力を行う際のOutput Optionsごとの挙動の違いを見ていきました。

実際の用途でどれが適切かは状況によって異なるため、「必ずこれを選んでおけばいい」というものはりません。 多くの選択肢が用意されているので、適切なものを使い分けるようにしてください。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.